package store

import (
	"dy/internal/api/store/myredis"
	"dy/internal/api/store/mysql"
	"fmt"

	"github.com/go-redis/redis"
	"xorm.io/xorm"
)

type datastore struct {
	orm *xorm.Engine
	rd  *redis.Client
}

func (ds *datastore) Comment() CommentStore {
	return NewComment(ds)
}

func (ds *datastore) Favorite() FavoriteStore {
	return NewFavorite(ds)
}

func (ds *datastore) Message() MessageStore {
	return NewMessage(ds)
}

func (ds *datastore) Relation() RelationStore {
	return NewRelation(ds)
}

func (ds *datastore) User() UserStore {
	return NewUser(ds)
}

func (ds *datastore) Video() VideoStore {
	return NewVideo(ds)
}

func GetFactory() (Factory, error) {
	orm, err := mysql.GetMysqlFactory()
	if err != nil {
		fmt.Println(err)
		return nil, err
	}
	rd, err := myredis.GetRedisFactory()
	if err != nil {
		fmt.Println(err)
		return nil, err
	}
	return &datastore{
		orm: orm,
		rd:  rd,
	}, nil

}
